package com.lmf.juc.sync.case1;

/**
 * 多线程编程步骤：
 *      1.定义资源类
 *      2.创建多个线程同时去调用资源类
 *
 *  以下是创建一个多线程抢票案例：多线程抢票窗口,利用 synchronized 同步锁关键字实现
 */
//创建多个线程同时去调用资源类
public class BuyTickets {

    //创建一个资源类对象
    static SaleTicket saleTicket = new SaleTicket();

    public static void main(String[] args) throws Exception{
        //创建一个A线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                //调用资源类的买票方法，要一直循环买票方法，不然就会只执行一次就结束了
                while (true){
                    try {
                        saleTicket.saleTickets();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        },"A线程").start();//调用start()方法，启动这个线程

        //创建一个B线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                //调用资源类的买票方法，要一直循环买票方法，不然就会只执行一次就结束了
                while (true){
                    try {
                        saleTicket.saleTickets();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        },"B线程").start();//调用start()方法，启动这个线程

        //创建一个C线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                //调用资源类的买票方法，要一直循环买票方法，不然就会只执行一次就结束了
                while (true){
                    try {
                        saleTicket.saleTickets();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        },"C线程").start();//调用start()方法，启动这个线程
    }
}
